Public key cryptography is typically used for secure communications over the Internet, for example, to distribute secret keys used in cryptographic algorithms. Public key cryptography is also used in digital signatures to authenticate the origin of data and protect the integrity of that data. Commonly used public key algorithms include Rivert, Shamir, Aldeman (RSA) and Diffie-Hellman key exchange (DH). The public key algorithm may be used to authenticate keys for encryption algorithms such as the Data Encryption Standard (DES) and the Advanced Encryption Standard (AES).
RSA and DH provide security based on the use of number theory. RSA is based on factoring the product of two large prime numbers. DH is based on a discrete logarithm for finite groups. Typically, public key systems use 1024-bit parameters for RSA and DH.
Typically, a processor includes a Public Key Encryption (PKE) unit that performs cryptographic computations with very high performance. The PKE unit accelerates large modular exponentiation problems and is optimized to work with operands in the range of 512 to 4096 bits.
In protocols such as RSA or DH the main operation is a large modular exponentiation with operands in the range of 512 to 4096 bits (or higher for ultra-secure applications). The exponentiation algorithms perform repeated modular squaring or multiplication operations, which consist of multiplication followed by reduction steps. The reductions may be performed by a variety of techniques such as Montgomery reduction or Barrett's reduction.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments of the claimed subject matter, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art. Accordingly, it is intended that the claimed subject matter be viewed broadly, and be defined only as set forth in the accompanying claims.